﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Serviços.BDServices;
using TCC_Hotel.Entidades;

namespace TCC_Hotel.Apresentacao.Apartamentos
{
    public partial class DetalharApartamento : System.Web.UI.Page
    {
        /// <summary>
        /// carregamento da página 
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();

            LoginService servico_Login = new LoginService();
            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Listar_Apartamento)
            {
                //Redireciona para a pagina inicial
                Response.Redirect("~/");
            }

            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Cadastrar_Apartamento)
            {
                //Redireciona para a pagina inicial
                btnEditar.Visible = false;
            }

            if (!IsPostBack)
            {
                if (Request.Params["numero"] == null)
                {
                    //Redireciona para a pagina inicial
                    Response.Redirect("~/");
                }

                //Recupera o parametro da URL
                string Numero = Request.Params["numero"];

                ApartamentoService servico = new ApartamentoService();

                //chama o serviço que busca no banco de dados o apartamento correspondente
                Apartamento apartamento = servico.RecuperarDetalhesApartamento(Convert.ToInt32(Numero));

                //preenche os textbox coma informação correta
                if (apartamento != null)
                {
                    txtNome.Text = apartamento.Nome;
                    txtNumero.Text = Convert.ToString(apartamento.Numero);
                    txtQuantidade.Text = Convert.ToString(apartamento.QntMaximaHospedes);
                 }
            }
        }

        /// <summary>
        /// Evento de click do botao voltar 
        /// </summary>
        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            //Redireciona para a pagina anterior
            Response.Redirect("~/Apresentacao/Apartamentos/ListarApartamentos.aspx");

        }

        /// <summary>
        /// Evento de click do botao editar 
        /// </summary>
        protected void btnEditar_Click(object sender, EventArgs e)
        {
            ApartamentoService servico = new ApartamentoService();
            //Recupera o parametro da URL
            int numero = Convert.ToInt32(Request.Params["numero"]);

            if (servico.ExcluirApartamento(numero))
            {
                //Redireciona para a pagina de editar correspondente com o numero como parametro
                Response.Redirect("~/Apresentacao/Apartamentos/EditarApartamento.aspx?numero=" + Request.Params["numero"]);
            }
            else
            {
                MensagemJS("ERRO: Não é possivel editar o apartamento porque existem reservas nele.");
            }
        }

        /// <summary>
        /// Lança um popup em javaScript com alguma mensagem
        /// </summary>
        /// <param name="msg">Mensagem do popup</param>
        public void MensagemJS(string msg)
        {         
            //Formata um alert para o usuário
            Page.ClientScript.RegisterStartupScript(

                     this.GetType(),

                     "Mensagem",

                     "$(window).load(function(){alert('" + msg + "')});",

                     true);
        }
    }
}